package com.lizhe.helloword.controller;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.lizhe.helloword.model.JsonTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.Date;
import java.util.Map;

/**
 * 类描述:
 *
 * @author Lz on 2021-10-21
 */
@Controller
@SuppressWarnings(value = "unchecked")
public class Helloword {

    @GetMapping("/hello")
    public void hello() {
        System.out.println("hello word");
    }

    @GetMapping("/json")
    public void jsonTest() throws JsonProcessingException {
        JsonTemplate jsonTemplate = new JsonTemplate();
        jsonTemplate.setCreateTime(new Date());
        jsonTemplate.setJsonTitle("json标题");
        jsonTemplate.setJsonDescription("json描述信息");

        ObjectMapper mapper = new ObjectMapper();

        // 手工转换数据
        // 除了在spring框架内实现自动的前后端JSON数据与java对象的转换，我们还可以使用jackson自己写代码进行转换。
        String jsonStr = mapper.writeValueAsString(jsonTemplate);
        // JsonTemplate jsonTemplate1 =  mapper.readValue(jsonStr,JsonTemplate.class);
        // System.out.println(jsonTemplate1.toString());

        // 也可以转成 map，使用SuppressWarnings 去除警告
        Map<String, Object> m = mapper.readValue(jsonStr, Map.class);
        System.out.println(m.get("title"));

        // System.out.println(jsonStr);
        // {"jsonDescription":"json描述信息","title":"json标题","createTime":"2021-10-25 21:08:44","subJsons":null}
    }
}
